
package _7;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Agenda implements Serializable{
	private final boolean ifNodeMessage=false;
    private Set<Pessoa> pessoas=new HashSet<Pessoa>();
    private Set<Empresa> empresas=new HashSet<Empresa>();

    public Agenda(){
        
    }

    public boolean se_pessoas(){
        if(pessoas.size()==0)
            return false;
        else
            return true;
    }

    public boolean se_empresas(){
        if(empresas.size()==0)
            return false;
        else
            return true;
    }
    
    public boolean se_pessoa_existe(Pessoa p){
    	Iterator<Pessoa> it= pessoas.iterator();

        while(it.hasNext()){
            Pessoa aux= it.next();

            if(aux.getNome().equals(p.getNome())
        		|| aux.getMorada().equals(p.getMorada())
        		|| aux.getTelefone().equals(p.getTelefone()) ){
            	return true;
            }
        }
    	
    	return false;
    }

    public boolean adicionar_pessoa(Pessoa p){
    	return se_pessoa_existe(p) ? false : pessoas.add(p);
    }
    
    public boolean eliminar_pessoa(int n){
        Iterator<Pessoa> it= pessoas.iterator();

        while(it.hasNext()){
            Pessoa aux= it.next();

            if(aux.getId()==n){
                it.remove();
                return true;
            }
        }

        return false;
    }

    public Pessoa pesquisar_pessoa(int n){
        Iterator<Pessoa> it= pessoas.iterator();

        while(it.hasNext()){
            Pessoa aux= it.next();

            if(aux.getId()==n){
                return aux;
            }
        }

        return null;
    }
    
    public String listar_pessoas(){
        String str= new String("");
        Iterator<Pessoa> it= pessoas.iterator();

        if(pessoas.size()==0){
            str= "Agenda sem pessoas registadas!";
            return str;
        }

        while(it.hasNext()){
            Pessoa aux= it.next();

            str+= aux.toString() + "\n";
        }

        return str;
    }

    public boolean adicionar_empresa(Empresa e){
         return empresas.add(e);
    }
    
    public boolean node_message(int number){
    	if(ifNodeMessage)
    		System.out.print(number + " ");
    	return true;
    }
    
    public boolean adicionar_num_empresa(int id, String num){
    	Iterator<Empresa> it= empresas.iterator();

        while(it.hasNext()){
            Empresa aux= it.next();
        
            if(aux.getId()==id){
                return aux.adiciona_num(num);
            }
        }
        
        return false;
   }

    public boolean se_empresa_existe(int id){
    	Iterator<Empresa> it= empresas.iterator();

        while(it.hasNext()){
            Empresa aux= it.next();

            if(aux.getId()==id){
                return true;
            }
        }

        return false;
   }
    
    public boolean eliminar_empresa(int n){
        Iterator<Empresa> it= empresas.iterator();

        while(it.hasNext()){
            Empresa aux= it.next();

            if(aux.getId()==n){
                it.remove();
                return true;
            }
        }

        return false;
    }

    public Empresa pesquisar_empresa(int n){
        Iterator<Empresa> it= empresas.iterator();

        while(it.hasNext()){
            Empresa aux= it.next();

            if(aux.getId()==n){
                return aux;
            }
        }

        return null;
    }

    public String listar_empresas(){
        String str= new String("");
        Iterator<Empresa> it= empresas.iterator();

        if(empresas.size()==0){
            str= "Agenda sem pessoas registadas!";
            return str;
        }

        while(it.hasNext()){
            Empresa aux= it.next();

            str+= aux.toString() + "\n";
        }

        return str;
    }
}
